package com.yc.cloud.admin.service;

import com.yc.cloud.common.orm.CommonPage;
import com.yc.cloud.common.basic.dto.BasePageReqDTO;
import com.yc.cloud.admin.dto.request.AlgStrategyCreateReqDTO;
import com.yc.cloud.admin.dto.request.AlgStrategyUpdateReqDTO;
import com.yc.cloud.admin.dto.request.AlgStrategyApplyReqDTO;
import com.yc.cloud.admin.vo.AlgStrategyVo;
import com.yc.cloud.entity.AlgStrategy;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;

/**
 * <p>
 * 算法策略表 服务类
 * </p>
 *
 * @author kinggu
 * @since 2025-07-15
 */
public interface AlgStrategyService extends IService<AlgStrategy> {

    boolean create(AlgStrategyCreateReqDTO createReqDTO);

    boolean update(AlgStrategyUpdateReqDTO updateReqDTO);

    boolean apply(AlgStrategyApplyReqDTO applyReqDTO);

    /**
     * 发布策略
     * @param id 策略ID
     * @return 是否成功
     */
    boolean publish(Long id);

    /**
     * 取消发布策略
     * @param id 策略ID
     * @return 是否成功
     */
    boolean unpublish(Long id);

    CommonPage<AlgStrategyVo> list(BasePageReqDTO pageReqDTO);

    AlgStrategyVo getVOById(Long id);

    List<AlgStrategyVo> convertToVoList(List<AlgStrategy> entityList);

    AlgStrategy get(Long id);

    boolean delete(Long id);
    
    /**
     * 根据ID列表获取策略VO对象列表
     * @param ids 策略ID列表
     * @return 策略VO对象列表
     */
    List<AlgStrategyVo> getVOByIds(List<Long> ids);
} 